package com.bestcem.xm.ticket.grpc.client.dto.user;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 用户信息 DTO
 *
 * @author XiaoYunSong <ys.xiao@idiaoyan.com>
 * @version v1.0
 * @date 2021/6/21 16:32
 */
@Data
public class UserDTO {
    private String id;
    /**
     * 组织ID
     */
    private String orgId;

    /**
     * 登录用户名(全小写)
     */
    private String userName;
    /**
     * 登录密码
     */
    private String password;
    /**
     * 盐
     */
    private String salt;
    /**
     * 用户姓名
     */
    private String name;
    /**
     * 头像
     */
    private String avatar;
    /**
     * 电子邮箱地址
     */
    private String email;
    /**
     * 手机号码
     */
    private String mobile;
    /**
     * 用户状态
     */
    private Integer status;
    /**
     * 备注
     */
    private String content;
    /**
     * 版本
     */
    private Integer edition;
    /**
     * 是否展示引导页
     */
    private Boolean showIntroduction;
    /**
     * 微信用户unionid
     */
    private String wxUnionid;
    /**
     * 微信小程序用户openid
     */
    private String wxOpenid;
    /**
     * 微信公众号用户openid
     */
    private String wxOffiOpenid;
    /**
     * 微信用户昵称
     */
    private String wxNickname;
    /**
     * 飞书商店用户open_id
     */
    private String fsOpenId;
    /**
     * 飞书用户唯一识别码
     */
    private String fsUnionId;
    /**
     * 飞书用户昵称
     */
    private String fsName;
    /**
     * sso用户标识
     */
    private String ssoName;
    /**
     * 是否同意用户协议
     */
    private Boolean isAccept;
    /**
     * 上次登录时间
     */
    @JsonDeserialize(using = LocalDateTimeDeserializer.class) // 反序列化
    @JsonSerialize(using = LocalDateTimeSerializer.class) // 序列化
    private LocalDateTime lastLoginTime;
    /**
     * 注册时ip
     */
    private String registerIp;
    /**
     * 是否是内部用户
     */
    private Boolean isInnerUser;
    /**
     * 引导读取记录["guide_verson1","guide_verson2"]
     */
    private List<String> guide;
    /**
     * 个人首页
     */
    private Integer userIndex;
}
